// Generated from code/ch18/Cymbol.g by ANTLR 4.9.0-SNAPSHOT


import { ATN } from "antlr4ts/atn/ATN";
import { ATNDeserializer } from "antlr4ts/atn/ATNDeserializer";
import { CharStream } from "antlr4ts/CharStream";
import { Lexer } from "antlr4ts/Lexer";
import { LexerATNSimulator } from "antlr4ts/atn/LexerATNSimulator";
import { NotNull } from "antlr4ts/Decorators";
import { Override } from "antlr4ts/Decorators";
import { RuleContext } from "antlr4ts/RuleContext";
import { Vocabulary } from "antlr4ts/Vocabulary";
import { VocabularyImpl } from "antlr4ts/VocabularyImpl";

import * as Utils from "antlr4ts/misc/Utils";


export class CymbolLexer extends Lexer {
	public static readonly T__0 = 1;
	public static readonly T__1 = 2;
	public static readonly T__2 = 3;
	public static readonly T__3 = 4;
	public static readonly T__4 = 5;
	public static readonly T__5 = 6;
	public static readonly T__6 = 7;
	public static readonly T__7 = 8;
	public static readonly T__8 = 9;
	public static readonly T__9 = 10;
	public static readonly T__10 = 11;
	public static readonly T__11 = 12;
	public static readonly T__12 = 13;
	public static readonly T__13 = 14;
	public static readonly ID = 15;
	public static readonly INT = 16;
	public static readonly WS = 17;
	public static readonly SL_COMMENT = 18;

	// tslint:disable:no-trailing-whitespace
	public static readonly channelNames: string[] = [
		"DEFAULT_TOKEN_CHANNEL", "HIDDEN",
	];

	// tslint:disable:no-trailing-whitespace
	public static readonly modeNames: string[] = [
		"DEFAULT_MODE",
	];

	public static readonly ruleNames: string[] = [
		"T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8", 
		"T__9", "T__10", "T__11", "T__12", "T__13", "ID", "LETTER", "INT", "WS", 
		"SL_COMMENT",
	];

	private static readonly _LITERAL_NAMES: Array<string | undefined> = [
		undefined, "'='", "';'", "'('", "')'", "','", "'{'", "'}'", "'struct'", 
		"'return'", "'+'", "'.'", "'float'", "'int'", "'void'",
	];
	private static readonly _SYMBOLIC_NAMES: Array<string | undefined> = [
		undefined, undefined, undefined, undefined, undefined, undefined, undefined, 
		undefined, undefined, undefined, undefined, undefined, undefined, undefined, 
		undefined, "ID", "INT", "WS", "SL_COMMENT",
	];
	public static readonly VOCABULARY: Vocabulary = new VocabularyImpl(CymbolLexer._LITERAL_NAMES, CymbolLexer._SYMBOLIC_NAMES, []);

	// @Override
	// @NotNull
	public get vocabulary(): Vocabulary {
		return CymbolLexer.VOCABULARY;
	}
	// tslint:enable:no-trailing-whitespace


	constructor(input: CharStream) {
		super(input);
		this._interp = new LexerATNSimulator(CymbolLexer._ATN, this);
	}

	// @Override
	public get grammarFileName(): string { return "Cymbol.g"; }

	// @Override
	public get ruleNames(): string[] { return CymbolLexer.ruleNames; }

	// @Override
	public get serializedATN(): string { return CymbolLexer._serializedATN; }

	// @Override
	public get channelNames(): string[] { return CymbolLexer.channelNames; }

	// @Override
	public get modeNames(): string[] { return CymbolLexer.modeNames; }

	public static readonly _serializedATN: string =
		"\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x02\x14{\b\x01\x04" +
		"\x02\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06\x04" +
		"\x07\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r\t\r" +
		"\x04\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t\x12" +
		"\x04\x13\t\x13\x04\x14\t\x14\x03\x02\x03\x02\x03\x03\x03\x03\x03\x04\x03" +
		"\x04\x03\x05\x03\x05\x03\x06\x03\x06\x03\x07\x03\x07\x03\b\x03\b\x03\t" +
		"\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\n\x03\n\x03\n\x03\n\x03\n\x03" +
		"\n\x03\n\x03\v\x03\v\x03\f\x03\f\x03\r\x03\r\x03\r\x03\r\x03\r\x03\r\x03" +
		"\x0E\x03\x0E\x03\x0E\x03\x0E\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03" +
		"\x10\x03\x10\x03\x10\x07\x10\\\n\x10\f\x10\x0E\x10_\v\x10\x03\x11\x03" +
		"\x11\x03\x12\x06\x12d\n\x12\r\x12\x0E\x12e\x03\x13\x03\x13\x03\x13\x03" +
		"\x13\x03\x14\x03\x14\x03\x14\x03\x14\x07\x14p\n\x14\f\x14\x0E\x14s\v\x14" +
		"\x03\x14\x05\x14v\n\x14\x03\x14\x03\x14\x03\x14\x03\x14\x02\x02\x02\x15" +
		"\x03\x02\x03\x05\x02\x04\x07\x02\x05\t\x02\x06\v\x02\x07\r\x02\b\x0F\x02" +
		"\t\x11\x02\n\x13\x02\v\x15\x02\f\x17\x02\r\x19\x02\x0E\x1B\x02\x0F\x1D" +
		"\x02\x10\x1F\x02\x11!\x02\x02#\x02\x12%\x02\x13\'\x02\x14\x03\x02\x06" +
		"\x04\x02C\\c|\x03\x022;\x05\x02\v\f\x0F\x0F\"\"\x04\x02\f\f\x0F\x0F\x02" +
		"~\x02\x03\x03\x02\x02\x02\x02\x05\x03\x02\x02\x02\x02\x07\x03\x02\x02" +
		"\x02\x02\t\x03\x02\x02\x02\x02\v\x03\x02\x02\x02\x02\r\x03\x02\x02\x02" +
		"\x02\x0F\x03\x02\x02\x02\x02\x11\x03\x02\x02\x02\x02\x13\x03\x02\x02\x02" +
		"\x02\x15\x03\x02\x02\x02\x02\x17\x03\x02\x02\x02\x02\x19\x03\x02\x02\x02" +
		"\x02\x1B\x03\x02\x02\x02\x02\x1D\x03\x02\x02\x02\x02\x1F\x03\x02\x02\x02" +
		"\x02#\x03\x02\x02\x02\x02%\x03\x02\x02\x02\x02\'\x03\x02\x02\x02\x03)" +
		"\x03\x02\x02\x02\x05+\x03\x02\x02\x02\x07-\x03\x02\x02\x02\t/\x03\x02" +
		"\x02\x02\v1\x03\x02\x02\x02\r3\x03\x02\x02\x02\x0F5\x03\x02\x02\x02\x11" +
		"7\x03\x02\x02\x02\x13>\x03\x02\x02\x02\x15E\x03\x02\x02\x02\x17G\x03\x02" +
		"\x02\x02\x19I\x03\x02\x02\x02\x1BO\x03\x02\x02\x02\x1DS\x03\x02\x02\x02" +
		"\x1FX\x03\x02\x02\x02!`\x03\x02\x02\x02#c\x03\x02\x02\x02%g\x03\x02\x02" +
		"\x02\'k\x03\x02\x02\x02)*\x07?\x02\x02*\x04\x03\x02\x02\x02+,\x07=\x02" +
		"\x02,\x06\x03\x02\x02\x02-.\x07*\x02\x02.\b\x03\x02\x02\x02/0\x07+\x02" +
		"\x020\n\x03\x02\x02\x0212\x07.\x02\x022\f\x03\x02\x02\x0234\x07}\x02\x02" +
		"4\x0E\x03\x02\x02\x0256\x07\x7F\x02\x026\x10\x03\x02\x02\x0278\x07u\x02" +
		"\x0289\x07v\x02\x029:\x07t\x02\x02:;\x07w\x02\x02;<\x07e\x02\x02<=\x07" +
		"v\x02\x02=\x12\x03\x02\x02\x02>?\x07t\x02\x02?@\x07g\x02\x02@A\x07v\x02" +
		"\x02AB\x07w\x02\x02BC\x07t\x02\x02CD\x07p\x02\x02D\x14\x03\x02\x02\x02" +
		"EF\x07-\x02\x02F\x16\x03\x02\x02\x02GH\x070\x02\x02H\x18\x03\x02\x02\x02" +
		"IJ\x07h\x02\x02JK\x07n\x02\x02KL\x07q\x02\x02LM\x07c\x02\x02MN\x07v\x02" +
		"\x02N\x1A\x03\x02\x02\x02OP\x07k\x02\x02PQ\x07p\x02\x02QR\x07v\x02\x02" +
		"R\x1C\x03\x02\x02\x02ST\x07x\x02\x02TU\x07q\x02\x02UV\x07k\x02\x02VW\x07" +
		"f\x02\x02W\x1E\x03\x02\x02\x02X]\x05!\x11\x02Y\\\x05!\x11\x02Z\\\x05#" +
		"\x12\x02[Y\x03\x02\x02\x02[Z\x03\x02\x02\x02\\_\x03\x02\x02\x02][\x03" +
		"\x02\x02\x02]^\x03\x02\x02\x02^ \x03\x02\x02\x02_]\x03\x02\x02\x02`a\t" +
		"\x02\x02\x02a\"\x03\x02\x02\x02bd\t\x03\x02\x02cb\x03\x02\x02\x02de\x03" +
		"\x02\x02\x02ec\x03\x02\x02\x02ef\x03\x02\x02\x02f$\x03\x02\x02\x02gh\t" +
		"\x04\x02\x02hi\x03\x02\x02\x02ij\b\x13\x02\x02j&\x03\x02\x02\x02kl\x07" +
		"1\x02\x02lm\x071\x02\x02mq\x03\x02\x02\x02np\n\x05\x02\x02on\x03\x02\x02" +
		"\x02ps\x03\x02\x02\x02qo\x03\x02\x02\x02qr\x03\x02\x02\x02ru\x03\x02\x02" +
		"\x02sq\x03\x02\x02\x02tv\x07\x0F\x02\x02ut\x03\x02\x02\x02uv\x03\x02\x02" +
		"\x02vw\x03\x02\x02\x02wx\x07\f\x02\x02xy\x03\x02\x02\x02yz\b\x14\x02\x02" +
		"z(\x03\x02\x02\x02\b\x02[]equ\x03\b\x02\x02";
	public static __ATN: ATN;
	public static get _ATN(): ATN {
		if (!CymbolLexer.__ATN) {
			CymbolLexer.__ATN = new ATNDeserializer().deserialize(Utils.toCharArray(CymbolLexer._serializedATN));
		}

		return CymbolLexer.__ATN;
	}

}

